package com.mojito.learn.design.patterns;

/**
 * 外观模式
 * <p>
 * 它提供了一个统一的接口，用来访问子系统中的一群接口，从而让子系统更容易使用。
 *
 * @author liufq
 * @since 2022/1/25 下午5:23
 */
public class FacadePattern {

    /**
     * 观看电影需要操作很多电器，使用外观模式实现一键看电影功能。
     */
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.watchMovie();
    }

    public static class SubSystem {
        public void turnOnTV() {
            System.out.println("turnOnTV()");
        }

        public void setCD(String cd) {
            System.out.println("setCD( " + cd + " )");
        }

        public void starWatching() {
            System.out.println("starWatching()");
        }
    }

    public static class Facade {
        private SubSystem subSystem = new SubSystem();

        public void watchMovie() {
            subSystem.turnOnTV();
            subSystem.setCD("a movie");
            subSystem.starWatching();
        }
    }
}
